import 'package:flutter/services.dart';

import 'util.dart';

/// 监听 原生 MethodChannel invokeMethod flutter 方法
typedef MethodChannelCallback = void Function(String result);

class MethodChannelManager {
  static late MethodChannelCallback methodChannelCallback;
  static VoidCallback? recordCompleted;

  // 设置监听器
  void setMethodChannelCallback(MethodChannelCallback callback) {
    methodChannelCallback = callback;
  }

  //flutter调用原生的实例
  static const platform = MethodChannel('com.topnet.xxx');

  //可以写一些flutter调用原生的方法
  void sendMsg2Android() {
    platform.invokeMethod('xxx');
  }

  //有原生调用flutter方法时，需提前调用初始化方法
  static void initChannel() {
    platform.setMethodCallHandler(platformCallHandler);
  }

  static Future<dynamic> platformCallHandler(MethodCall call) async {
    switch (call.method) {
      case "example": //弹出账号互顶弹窗

        break;

      case "xfVoiceSetResult": //科大讯飞 返回语音识别结果
        // 监听回调
        methodChannelCallback.call(call.arguments);
        break;
      case 'xfVoiceCompleted': //语音回调结束
        Get.log('xfVoiceCompleted');
        if (recordCompleted != null) {
          recordCompleted!();
        }
        break;
    }
  }
}
